Type Erasure
Java
Javaコンパイラがコードをコンパイルするときの、ジェネリクスに関する挙動
訳すなら型消去?
ジェネリクスで定義した型変数を消去し、代わりにその型変数を参照した箇所を全てObjectに置換する。
もし型変数に型の上界があれば、参照した箇所を全てその上界の型へ置換する。
例
型変数Tの定義がT extends SuperClassだった場合、private T variableはprivate SuperClass variableに置換される。
コーナーケースの型安全を守るために、Bridge Methodと呼ばれる自動的に生成された関数がコンパイル時に挿入される場合がある。
詳しくはType Erasure in Java Explained参照
参考
Type Erasure in Java Explained